// pages/home/index.js
const app = getApp()
const { fetchStudentInfo, fetchCode2Session } = require('../../services/index')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null,
    studentInfo: null,
    markers:[
      {
        title:"绿地新都会6座",
        width:16,
        height:16,
        longitude: "113.768590",
        latitude: "34.770470",
        iconPath: '../../assets/img/icon-pos.png',
      }
    ]
  },
  async onLoad() {
    wx.showLoading({ title: '正在加载', mask: true })
    try {
      // 1. 登录
      await this.userLogin()
      // 2. 获取微信头像
      await this.getUserinfo()
      // 3. 获取用户信息
      await this.init()
    }catch(e) {
      // ！！！微信小程序不允许，强制用户注册，所有取消进入这个分支条件的代码！！！
      // 1. 没有注册，跳进注册页面（注册页面没有微信登录的话，首先微信登录）
      // 2. 没有微信授权登录
      // wx.reLaunch({ url: '/pages/login/index' })
    }
    wx.hideLoading()
  },
  async init() {
    const { data } = await fetchStudentInfo()
    app.globalData.studentInfo = data
    this.setData({ studentInfo: data })
    if(data instanceof Object) {
      // 改用新逻辑
      // const { status } = data
      // switch (status) {
      //   case 0:
      //     // 正在审核中
      //     wx.redirectTo({url: '../pending/index'})
      //     break
      //   case 1: // 审核通过
      //   case 3: // 学习中
      //   case 4: // 已结业
      //   case 5: // 已退课
      //     break
      //   case 2:
      //     // 审核不通过
      //     wx.redirectTo({url: '../fail/index'})
      //     break
      //   default:
      //     // 去报名
      //     wx.redirectTo({url: '../login/index'})
      // }
    }else {
      // 没有获取到学生信息，去报名
      wx.redirectTo({url: '../login/index'})
    }
  },
  toSelect() {
    // 重新报名
    wx.navigateTo({url: '../select/index'})
  },
  goBf:function(){
    // console.log('我想要跳到不凡')
    wx.navigateTo({
      url: '../bf/index',
    })
  },
  userLogin() {
    return new Promise((resolve, reject)=> {
      if (wx.getStorageSync("openid")) {
        // 已经注册和有openid
        resolve({'code': 0})
      }else {
        // 登录
        wx.login({
          success: res => {
            // 发送 res.code 到后台换取 openId, sessionKey, unionId
            fetchCode2Session({ code: res.code })
              .then(({ data }) => {
                if (data.openid) {
                  // 获取openid
                  wx.setStorageSync("openid", data.openid)
                  resolve({'code': 0})
                }
                resolve({'code': 1})
              })
          }
        })
      }
    })
  },
  // 更新微信用户新消息，用于退订小程序的用户
  reloadUserinfo(e) {
    if(e.detail.userInfo) {
      const { userInfo } = e.detail
      wx.setStorageSync("userInfo", userInfo)
      this.setData({ userInfo })
      app.globalData.userInfo = userInfo
    }else {
      // 用户不同意
      wx.showToast({
        title: '无法获取微信用户信息',
        icon:"none"
      })
    }
  },
  getUserinfo() {
    return new Promise((resolve, reject)=> {
      const userInfo = wx.getStorageSync("userInfo")
      if (userInfo) {
        this.setData({ userInfo })
        app.globalData.userInfo = userInfo
        resolve({'code': 0})
      } else {
        // 获取用户信息
        wx.getSetting({
          success: res => {
            if (res.authSetting['scope.userInfo']) {
              // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
              wx.getUserInfo({
                success: res => {
                  // 可以将 res 发送给后台解码出 unionId
                  wx.setStorageSync("userInfo", res.userInfo)
                  this.setData({ userInfo })
                  app.globalData.userInfo = userInfo
                  resolve({'code': 0})
                }
              })
            }else {
              resolve({'code': 1}) // 没有授权
            }
          }
        })
      }
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  async onShow() {
    wx.showLoading({ title: '正在加载', mask: true })
    try {
      await this.init()
    }catch(e) {
    }
    wx.hideLoading()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  async onPullDownRefresh() {
    wx.showLoading({ title: '正在加载', mask: true })
    try {
      await this.init()
    }catch(e) {
    }
    wx.hideLoading()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
})